﻿using System;
using System.Collections.Generic;
using System.Text;

namespace VkSample57
{
    public class CubeData
    {
        public uint VCount { get; set; }

        public float[] Data { get; set; }

        public void GenCubeData()
        {
            const float rect = 1.0f;
            List<float> alVertix = new List<float>();
            List<float> alNormal = new List<float>();
			alVertix.Add(rect); alVertix.Add(rect); alVertix.Add(rect);//1
			alVertix.Add(-rect); alVertix.Add(rect); alVertix.Add(rect);//2
			alVertix.Add(-rect); alVertix.Add(-rect); alVertix.Add(rect);//3

			alVertix.Add(rect); alVertix.Add(rect); alVertix.Add(rect);//1
			alVertix.Add(-rect); alVertix.Add(-rect); alVertix.Add(rect);//3
			alVertix.Add(rect); alVertix.Add(-rect); alVertix.Add(rect);// 2'
																						  //后面
			alVertix.Add(rect); alVertix.Add(rect); alVertix.Add(-rect);//1
			alVertix.Add(-rect); alVertix.Add(rect); alVertix.Add(-rect);//2
			alVertix.Add(-rect); alVertix.Add(-rect); alVertix.Add(-rect);//3

			alVertix.Add(rect); alVertix.Add(rect); alVertix.Add(-rect);//1
			alVertix.Add(-rect); alVertix.Add(-rect); alVertix.Add(-rect);//3
			alVertix.Add(rect); alVertix.Add(-rect); alVertix.Add(-rect);// 2'
																						   //左面
			alVertix.Add(-rect); alVertix.Add(-rect); alVertix.Add(-rect);//3
			alVertix.Add(-rect); alVertix.Add(rect); alVertix.Add(-rect);//2
			alVertix.Add(-rect); alVertix.Add(rect); alVertix.Add(rect);//1

			alVertix.Add(-rect); alVertix.Add(-rect); alVertix.Add(rect);//3
			alVertix.Add(-rect); alVertix.Add(-rect); alVertix.Add(-rect);//2
			alVertix.Add(-rect); alVertix.Add(rect); alVertix.Add(rect);//1
																						  //右面
			alVertix.Add(rect); alVertix.Add(-rect); alVertix.Add(-rect);//3
			alVertix.Add(rect); alVertix.Add(rect); alVertix.Add(-rect);//2
			alVertix.Add(rect); alVertix.Add(rect); alVertix.Add(rect);//1

			alVertix.Add(rect); alVertix.Add(-rect); alVertix.Add(rect);//3
			alVertix.Add(rect); alVertix.Add(-rect); alVertix.Add(-rect);//2
			alVertix.Add(rect); alVertix.Add(rect); alVertix.Add(rect);//1
																						 //上面
			alVertix.Add(-rect); alVertix.Add(rect); alVertix.Add(-rect);//3
			alVertix.Add(rect); alVertix.Add(rect); alVertix.Add(-rect);//2
			alVertix.Add(rect); alVertix.Add(rect); alVertix.Add(rect);//1

			alVertix.Add(-rect); alVertix.Add(rect); alVertix.Add(rect);//3
			alVertix.Add(-rect); alVertix.Add(rect); alVertix.Add(-rect);//2
			alVertix.Add(rect); alVertix.Add(rect); alVertix.Add(rect);//1
																						 //下面
			alVertix.Add(-rect); alVertix.Add(-rect); alVertix.Add(-rect);//3
			alVertix.Add(rect); alVertix.Add(-rect); alVertix.Add(-rect);//2
			alVertix.Add(rect); alVertix.Add(-rect); alVertix.Add(rect);//1

			alVertix.Add(-rect); alVertix.Add(-rect); alVertix.Add(rect);//3
			alVertix.Add(-rect); alVertix.Add(-rect); alVertix.Add(-rect);//2
			alVertix.Add(rect); alVertix.Add(-rect); alVertix.Add(rect);//1

			alNormal.Add(0); alNormal.Add(0); alNormal.Add(1);
			alNormal.Add(0); alNormal.Add(0); alNormal.Add(1);
			alNormal.Add(0); alNormal.Add(0); alNormal.Add(1);
			alNormal.Add(0); alNormal.Add(0); alNormal.Add(1);
			alNormal.Add(0); alNormal.Add(0); alNormal.Add(1);
			alNormal.Add(0); alNormal.Add(0); alNormal.Add(1);
			//后面
			alNormal.Add(0); alNormal.Add(0); alNormal.Add(-1);
			alNormal.Add(0); alNormal.Add(0); alNormal.Add(-1);
			alNormal.Add(0); alNormal.Add(0); alNormal.Add(-1);
			alNormal.Add(0); alNormal.Add(0); alNormal.Add(-1);
			alNormal.Add(0); alNormal.Add(0); alNormal.Add(-1);
			alNormal.Add(0); alNormal.Add(0); alNormal.Add(-1);
			//左面
			alNormal.Add(-1); alNormal.Add(0); alNormal.Add(0);
			alNormal.Add(-1); alNormal.Add(0); alNormal.Add(0);
			alNormal.Add(-1); alNormal.Add(0); alNormal.Add(0);
			alNormal.Add(-1); alNormal.Add(0); alNormal.Add(0);
			alNormal.Add(-1); alNormal.Add(0); alNormal.Add(0);
			alNormal.Add(-1); alNormal.Add(0); alNormal.Add(0);
			//右面
			alNormal.Add(1); alNormal.Add(0); alNormal.Add(0);
			alNormal.Add(1); alNormal.Add(0); alNormal.Add(0);
			alNormal.Add(1); alNormal.Add(0); alNormal.Add(0);
			alNormal.Add(1); alNormal.Add(0); alNormal.Add(0);
			alNormal.Add(1); alNormal.Add(0); alNormal.Add(0);
			alNormal.Add(1); alNormal.Add(0); alNormal.Add(0);
			//上面
			alNormal.Add(0); alNormal.Add(1); alNormal.Add(0);
			alNormal.Add(0); alNormal.Add(1); alNormal.Add(0);
			alNormal.Add(0); alNormal.Add(1); alNormal.Add(0);
			alNormal.Add(0); alNormal.Add(1); alNormal.Add(0);
			alNormal.Add(0); alNormal.Add(1); alNormal.Add(0);
			alNormal.Add(0); alNormal.Add(1); alNormal.Add(0);
			//下面
			alNormal.Add(0); alNormal.Add(-1); alNormal.Add(0);
			alNormal.Add(0); alNormal.Add(-1); alNormal.Add(0);
			alNormal.Add(0); alNormal.Add(-1); alNormal.Add(0);
			alNormal.Add(0); alNormal.Add(-1); alNormal.Add(0);
			alNormal.Add(0); alNormal.Add(-1); alNormal.Add(0);
			alNormal.Add(0); alNormal.Add(-1); alNormal.Add(0);

			VCount = (uint)alVertix.Count / 3;
			Data = new float[alVertix.Count * 2];
			int index = 0;
			for (int i = 0; i < VCount; i++)
			{
				Data[index++] = alVertix[i * 3 + 0]; //保存顶点坐标X 分量
				Data[index++] = alVertix[i * 3 + 1]; //保存顶点坐标Y 分量
				Data[index++] = alVertix[i * 3 + 2]; //保存顶点坐标Z 分量
				Data[index++] = alNormal[i * 3 + 0]; //保存顶点法向量X 分量
				Data[index++] = alNormal[i * 3 + 1]; //保存顶点法向量Y 分量
				Data[index++] = alNormal[i * 3 + 2]; //保存顶点法向量Z 分量
			}
		}
    }
}
